import request from '@/utils/request';

/**
 * 菜单管理相关API接口
 */

/**
 * 获取菜单列表
 * @param {Object} params - 查询参数
 * @param {string} params.name - 菜单名称
 * @param {string} params.type - 菜单类型
 * @param {string} params.status - 菜单状态
 * @returns {Promise} - 返回菜单列表数据
 */
export const getMenuList = (params) => {
  return request({
    url: '/menu/list',
    method: 'get',
    params
  })
}

/**
 * 检查菜单是否有子菜单
 * @param {number|string} menuId - 菜单ID
 * @returns {Promise} - 返回检查结果
 */
export const checkMenuHasChildren = (menuId) => {
  return request({
    url: `/menu/hasChildren/${menuId}`,
    method: 'get'
  })
}

/**
 * 添加菜单
 * @param {Object} data - 菜单数据
 * @returns {Promise} - 返回添加结果
 */
export const addMenu = (data) => {
  return request({
    url: '/menu/add',
    method: 'post',
    data
  })
}

/**
 * 更新菜单
 * @param {Object} data - 菜单数据
 * @returns {Promise} - 返回更新结果
 */
export const updateMenu = (data) => {
  return request({
    url: '/menu/update',
    method: 'post',
    data
  })
}

/**
 * 更新菜单状态
 * @param {number|string} menuId - 菜单ID
 * @param {Object} data - 状态数据
 * @param {number} data.status - 菜单状态值
 * @returns {Promise} - 返回更新结果
 */
export const updateMenuStatus = (menuId, data) => {
  return request({
    url: `/menu/updateStatus/${menuId}`,
    method: 'post',
    data
  })
}

/**
 * 删除菜单
 * @param {number|string} menuId - 菜单ID
 * @returns {Promise} - 返回删除结果
 */
export const deleteMenu = (menuId) => {
  return request({
    url: `/menu/delete/${menuId}`,
    method: 'post'
  })
}

/**
 * 批量删除菜单
 * @param {Array} ids - 菜单ID数组
 * @returns {Promise} - 返回删除结果
 */
export const batchDeleteMenus = (ids) => {
  return request({
    url: '/menu/batchDelete',
    method: 'post',
    data: { ids }
  })
}